'''
----歌手大赛----
为丰富校园文化生活，学校拟组织一场歌手大赛，从参赛选手中选拔出10名相对突出的学生，授予“校园十大歌手”称号。
比赛设有评委组，每名选手演唱完毕后会由评委组的10名评委打分。
为保证比赛公平公正、防止作弊和恶意打分，计算得分（即打分的平均分）时会先去掉最高分和最低分。
本案例要求编写程序，实现根据需求计算每位选手得分的功能。
'''

# contestant=['Tom','Ammy','Sam','Join','Brown','Bob','Lucy','Aman','Chars','Login','Chin','Riven']
# # contestant=['Tom','Ammy']
# score_list=[]
# lenth=len(contestant)
# score_avg=[]
# student=input('请输入学生姓名：')
# jury=int(input('请输入评委人数：'))
# for i in range(lenth):
#     # print(f'请为第{i+1}为选手评分')
#     score_list=[]
#     for j in range(jury):
#         score=random.randint(1, 10)
#         score_list.append(score)
#     # print(f'第{i+1}位同学获得以下分数：\n{score_list}')
#     score_list.sort()#排序
#     score_list.pop(0)#去掉最低分
#     score_list.pop(-1)#去掉最高分
#     sum_score=sum(score_list)
#     avg=round(sum_score/(jury-2),1)#计算第i位同学的平均分
#     score_avg.append(avg)#把第i名学生的成绩写入列表
#     print(f'第{i+1}位同学的最后得分为：',score_avg[i])
# score_avg2=sorted(score_avg)
# print('歌唱比赛成绩单：',score_avg2)
# print('本次比赛的最高分为：',score_avg2[-1])
# print('本次比赛的最低分为：',score_avg2[0])

'''
----2.使用字典设计超市收银机----
为一家超市开发一个收银系统(以3-5种商品为例):
使用变量保存：商品编号 商品价格 商品名字
  1.提示用户输入商品编号和数量,然后显示总价多少钱。
  2.提示用户输入付款金额,然后显示找零金额。
练习目标：
  1.学会使用变量
  2.学会使用条件控制程序逻辑'''


# 超市货物上架
# 此函数思路故障，把重心放在了怎样获取数据，但是没有必要
def up():
    goods = []
    kinds = int(input('今日共上架商品（种）：'))
    # k_v_count=int(input('请输入字典种键值对数量：'))
    key_l = ['commodity', 'c_number', 'unit_price']
    for i in range(kinds):
        print(f'请录入第{i + 1}种商品：')
        supermaket = {}
        for j in range(3):
            # commodity = input('请输入商品名字：')
            # c_number = input('请输入商品编号:')
            # unit_price = int(input('请输入商品单价：'))
            key1 = key_l[j]
            value = input(f'请输入{key1}键的对应值：')
            if j + 1 == 1:
                supermaket.update(commodity=value)
            elif j + 1 == 2:
                supermaket.update(c_number=value)
            elif j + 1 == 3:
                supermaket.update(unit_price=value)
        goods.append(supermaket)
    return goods

def count(total):
    while True:

        pay_money = int(input('请输入结账总额：'))
        if pay_money < total_point:
            print('对不起，结账余额不足，请重新输入！')
        else:
            pay_change=pay_money-total
            print(f'您本次共消费：{total}元，找零{pay_change}元')  # 打印小票
        break


print('*-' * 20)
#超市中的数据
n_goods = [{'commodity': '苹果', 'c_number': '001', 'unit_price': '3'},
           {'commodity': '梨', 'c_number': '002', 'unit_price': '4'},
           {'commodity': '甘蔗', 'c_number': '003', 'unit_price': '2'}]


if n_goods == []:
    n_goods = up()
else:
    print('今日商品、商品单价以及对应商品编号如下：')
    for p_id in n_goods:
        print(p_id)

while True:
    id = input('请输入所购买商品编号c_number：')
    for p_id in n_goods:
        if id == p_id['c_number']:
            tag = 1
            break
        else:
            tag = 0

    if tag == 1:
        t_l=[]
        num = int(input('请输入购买商品数量：'))
        total_point = int(p_id['unit_price']) * num  # 计算总价
        #判断是否结束
        enough = input('您是否想要结束购物?（y/n）:')
        if enough == 'y':
            t_l.append(total_point)
            total = sum(t_l)
            count(total)
            break
        else:
            continue
    else:
        print('本系统中无此商品，请输入正确的商品编号：')

